#ifndef __ADJACENCY_LIST_DIRECTED_GRAPH_H__CLOUD_ZHANG
#define __ADJACENCY_LIST_DIRECTED_GRAPH_H__CLOUD_ZHANG

#include <list>
#include <vector>
#include <ostream>

namespace CloudZ
{
	class AdjacencyListDirectedGraph
	{
	public:
		AdjacencyListDirectedGraph();
		~AdjacencyListDirectedGraph();

	private:
		std::vector<std::list<int>> _adjacencyLists;

	public:
		void addEdge(int v, int u);
		std::list<int> & getEdges(int v);
		void print(std::ostream &out);
	};
}

#endif